#include <stdio.h>
#include <time.h>
#include <stdlib.h>

/**
 * 执行猜数字游戏的主要逻辑
 */
void game()
{
    srand(time(0));           // 放在这里只会调用一次
    int r = rand() % 100 + 1; // 使随机数变为1-100的范围
    int num;
    int cumt = 1;
    int sums = 20;
    while (sums > 0)
    {
        printf("猜数字:");
        if (scanf("%d", &num) != 1)
        { // 检查输入是否为整数
            while (getchar() != '\n')
                ; // 清除输入缓冲区
            continue;
        }
        if (num == r)
        {
            printf("恭喜你!猜对了!数字是%d,你共猜了%d次\n", r, cumt);
            break;
        }
        else if (num < r)
        {
            printf("猜小了!您还有%d次机会\n", sums - 1);
        }
        else if (num > r)
        {
            printf("猜大了!您还有%d次机会\n", sums - 1);
        }
        else
        {
            printf("输入错误!请输入整数！");
        }
        cumt++;
        sums--;
        if (sums == 0)
        {
            printf("没有机会了！游戏结束\n");
            break;
        }
    }
}

/**
 * 打印游戏规则
 */
void guize()
{
    printf("游戏规则：\n");
    printf("1. 系统将随机生成一个1到100之间的数字。\n");
    printf("2. 你需要猜测这个数字是多少。\n");
    printf("3. 每次猜测后，系统会告诉你猜大了还是猜小了。\n");
    printf("4. 猜对数字后，游戏结束。\n");
}

int main()
{
    int input;
    do
    {
        printf("------------1.开始游戏------------------\n");
        printf("------------2.游戏规则------------------\n");
        printf("------------3.结束游戏------------------\n");
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
            break;
        case 2:
            guize();
            break;
        case 3:
            printf("游戏结束！！\n");
            break;

        default:
            printf("输入错误！请按要求输入\n");
            break;
        }
    } while (input);
}